home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
3D Game Programming All in One
/
3D Game Programming All in One Disc.iso
/
3D2E
/
RESOURCES
/
KOOB
/
common
/
ui
/
ColorPickerDlg.gui
< prev
next >
Wrap
Text File
|
2005-11-23
|
8KB
|
276 lines
//--- OBJECT WRITE BEGIN ---
new GuiColorPickerCtrl(ColorPickerDlg) {
Profile = "GuiDefaultProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "0 0";
Extent = "800 600";
MinExtent = "8 2";
Visible = "1";
baseColor = "1.000000 0.000000 1.000000 1.000000";
pickColor = "0.788235 0.713726 0.600000 1.000000";
selectorGap = "1";
displayMode = "Dropper";
actionOnMove = "1";
new GuiWindowCtrl(GuiPickerDlg) {
Profile = "GuiWindowProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "51 39";
Extent = "358 294";
MinExtent = "8 2";
Visible = "1";
text = "Pick Color";
maxLength = "255";
resizeWidth = "0";
resizeHeight = "0";
canMove = "1";
canClose = "1";
canMinimize = "0";
canMaximize = "0";
MinSize = "50 50";
closeCommand = "endColorDropper();Canvas.popDialog(ColorPickerDlg);";
new GuiColorPickerCtrl(ColorBlendSelect) {
Profile = "GuiDefaultProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "9 42";
Extent = "314 190";
MinExtent = "8 2";
Visible = "1";
baseColor = "0.600000 1.000000 0.000000 1.000000";
selectorGap = "1";
displayMode = "BlendColor";
actionOnMove = "1";
};
new GuiSliderCtrl(ColorAlphaSelect) {
Profile = "GuiSliderProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "8 238";
Extent = "293 21";
MinExtent = "8 2";
Visible = "1";
range = "0.000000 1.000000";
ticks = "255";
value = "1";
};
new GuiColorPickerCtrl(ColorRangeSelect) {
Profile = "GuiDefaultProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "328 42";
Extent = "21 188";
MinExtent = "8 2";
Visible = "1";
Command = "updatePickerBaseColor();";
baseColor = "1.000000 0.000000 1.000000 1.000000";
pickColor = "0.600000 1.000000 0.000000 1.000000";
selectorGap = "1";
displayMode = "VertColor";
actionOnMove = "1";
};
new GuiTextCtrl(Channel_R_Val) {
Profile = "GuiTextProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "14 21";
Extent = "22 18";
MinExtent = "8 2";
Visible = "1";
text = "R : 1.0";
maxLength = "255";
};
new GuiTextCtrl(Channel_G_Val) {
Profile = "GuiTextProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "69 21";
Extent = "23 18";
MinExtent = "8 2";
Visible = "1";
text = "G : 1.0";
maxLength = "255";
};
new GuiTextCtrl(Channel_B_Val) {
Profile = "GuiTextProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "131 21";
Extent = "22 18";
MinExtent = "8 2";
Visible = "1";
text = "B : 1.0";
maxLength = "255";
};
new GuiTextCtrl(Channel_A_Val) {
Profile = "GuiTextProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "198 21";
Extent = "23 18";
MinExtent = "8 2";
Visible = "1";
text = "A : 1.0";
maxLength = "255";
};
new GuiButtonCtrl() {
Profile = "GuiButtonProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "304 238";
Extent = "47 18";
MinExtent = "8 2";
Visible = "1";
Command = "toggleColorPicker();";
text = "Drop";
groupNum = "-1";
buttonType = "PushButton";
};
new GuiButtonCtrl() {
Profile = "GuiButtonProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "201 267";
Extent = "71 17";
MinExtent = "8 2";
Visible = "1";
Command = "DoColorPickerCallback();";
text = "Ok";
groupNum = "-1";
buttonType = "PushButton";
};
new GuiButtonCtrl() {
Profile = "GuiButtonProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "279 267";
Extent = "71 17";
MinExtent = "8 2";
Visible = "1";
Command = "Canvas.popDialog(ColorPickerDlg);";
text = "Cancel";
groupNum = "-1";
buttonType = "PushButton";
};
};
};
//--- OBJECT WRITE END ---
$ColorPickerCallback = ""; // Control that we need to update
$ColorCallbackType = 1; // ColorI
// This function pushes the color picker dialog and returns to a callback the selected value
function GetColorI( %currentColor, %callback )
{
$ColorPickerCallback = %callback;
$ColorCallbackType = 1; // ColorI
// Set the RGBA displays accordingly
%red = getWord(%currentColor, 0);
%green = getWord(%currentColor, 1);
%blue = getWord(%currentColor, 2);
%alpha = getWord(%currentColor, 3);
setColorInfo(%red, %green, %blue, %alpha);
ColorBlendSelect.pickColor = %red SPC %green SPC %blue SPC "1.0";
ColorBlendSelect.updateColor();
ColorAlphaSelect.setValue(%alpha);
Canvas.pushDialog(ColorPickerDlg);
}
function GetColorF( %currentColor, %callback )
{
$ColorPickerCallback = %callback;
$ColorCallbackType = 2; // ColorF
// Set the RGBA displays accordingly
%red = getWord(%currentColor, 0);
%green = getWord(%currentColor, 1);
%blue = getWord(%currentColor, 2);
%alpha = getWord(%currentColor, 3);
setColorInfo(%red, %green, %blue, %alpha);
ColorBlendSelect.pickColor = %red SPC %green SPC %blue SPC "1.0";
ColorBlendSelect.updateColor();
ColorAlphaSelect.setValue(%alpha);
Canvas.pushDialog(ColorPickerDlg);
}
function DoColorPickerCallback()
{
eval( $ColorPickerCallback @ "(\"" @ constructNewColor(ColorBlendSelect.getValue(), $ColorCallbackType) @"\");" );
Canvas.popDialog(ColorPickerDlg);
}
// This function updates the base color on the blend control
function updatePickerBaseColor()
{
%pickColor = ColorRangeSelect.getValue();
%red = getWord(%pickColor, 0);
%green = getWord(%pickColor, 1);
%blue = getWord(%pickColor, 2);
ColorBlendSelect.baseColor = %red SPC %green SPC %blue SPC "1.0";
ColorBlendSelect.updateColor();
}
// This function is used to update the text controls at the top
function setColorInfo(%red, %green, %blue, %alpha)
{
Channel_R_Val.setValue("R :" SPC mCeil(%red * 255));
Channel_G_Val.setValue("G :" SPC mCeil(%green * 255));
Channel_B_Val.setValue("B :" SPC mCeil(%blue * 255));
Channel_A_Val.setValue("A :" SPC mCeil(%alpha * 255));
}
// This function constructs a new color, and updates the text displays accordingly
function constructNewColor(%pickColor, %colorType )
{
%red = getWord(%pickColor, 0);
%green = getWord(%pickColor, 1);
%blue = getWord(%pickColor, 2);
%alpha = ColorAlphaSelect.getValue();
// Update the text controls to reflect new color
setColorInfo(%red, %green, %blue, %alpha);
if ( %colorType == 1 ) // ColorI
return mCeil( %red * 255 ) SPC mCeil( %green * 255 ) SPC mCeil( %blue * 255 ) SPC mCeil( %alpha * 255 );
else // ColorF
return %red SPC %green SPC %blue SPC %alpha;
}
// Functions to deal with the color dropper
function startColorDropper()
{
//ColorPickerDlg.command = "ColorDropperSelect.baseColor = ColorPickerDlg.pickColor;";
ColorPickerDlg.altCommand = $pickerUpdateControl@".setValue(constructNewColor(ColorPickerDlg.pickColor));endColorDropper();";
ColorPickerDlg.setActive(true);
$pickerActive = true;
}
function endColorDropper()
{
ColorPickerDlg.command = "";
ColorPickerDlg.altCommand = "";
ColorPickerDlg.setActive(false);
$pickerActive = false;
}
function toggleColorPicker()
{
if ($pickerActive)
endColorDropper();
else
startColorDropper();
}